package com.wang.jmonkey.common.model.dto;

import cn.hutool.core.clone.CloneSupport;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.wang.jmonkey.common.model.enums.BooleanEnum;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.List;

/**
 * @Description 树形结构定义
 * @Author HeJiawang
 * @Date 2021/5/22 10:56
 */
@Data
@Accessors(chain = true)
public abstract class BaseTreeDto <T> extends CloneSupport<T> implements Serializable {

    /**
     * 自身id
     */
    private Long id;

    /**
     * 父级id
     */
    private Long parentId;

    /**
     * 子节点集合
     */
    private List<T> children;

    /**
     * 添加子节点
     * @param node 子节点信息
     */
    public void addChildren(T node) {
        if (CollUtil.isEmpty(children)) {
            children = CollUtil.newArrayList();
        }

        this.children.add(node);
    }

    /**
     * 批量添加子节点
     * @param nodeList 子节点集合
     */
    public void addAllChildren(List<T> nodeList) {
        if (CollUtil.isEmpty(children)) {
            children = CollUtil.newArrayList();
        }

        this.children.addAll(nodeList);
    }

    /**
     * 创建人id
     */
    protected Long createdBy;

    /**
     * 创建时间，yyyyMMddHHmmss
     */
    protected Long createdTime;

    /**
     * 修改人id
     */
    protected Long updatedBy;

    /**
     * 最后修改日期
     */
    protected Long updatedTime;

    /**
     * 使用状态 1已删除 0未删除
     */
    protected BooleanEnum deletedStatus;
}
